/*
 * @Author: your name
 * @Date: 2022-02-04 14:11:43
 * @LastEditTime: 2022-02-04 14:57:53
 * @LastEditors: Please set LastEditors
 * @Description: 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
 * @FilePath: \ts\08类的访问属性-只读属性.ts
 */
  // 访问属性
  // 1. private 只可以在类内部访问，外部不可访问，继承子类也不可以通过this.name调用，调用需要调用get方法， 值不可在外部改，修改调用set
  // 2.protected , 可以在类内部和子类this.xx调用， 不可以在外部调用,调用需要调用get方法， 值不可在外部改，修改调用set
  // 3.public ，类内外都可以调用, 可以直接修改值
  // 4. readonly , 声明一個属性是只读的，不可修改
  // 5.static  , 声明一個属于类的变量,即静态成员，直接通过类名可调用,new 的对象不能调用

  class testC {
      private name = 'kele'
      protected age = 20
      like='舞蹈'
      public readonly rany = '我只能读'
      static sta = '类名可调用'

      private say() {
          return this.name +'你好, 私有的名字'
      }

      protected say1() {
          return this.age + 10
      }

      sayAny() {
          console.log('我是共有的', this.say(),this.rany)
      }
  }
  let test_chid = new testC()
//    test_chid.age 类外不可访问
//   test_chid.rany = 'd' 只读不可以更改
    console.log(test_chid.like)   
    console.log(testC.sta)

// 继承
  class testchid extends testC {
      sayChild() {
          this.say1() + this.age + this.rany // 保护的子类可以访问
      }

  }